Skip to content

馃И test(web): pin blob health into node liveness - #2258

Merged
gaborbernat merged 1 commit into
mainfrom
test/web-mutants-1893
Sep 9, 2026
Merged

馃И test(web): pin blob health into node liveness#2258
gaborbernat merged 1 commit into
mainfrom
test/web-mutants-1893

Conversation

@gaborbernat

Copy link
Copy Markdown
Member

The topology page reports a node as NodeLiveness::Live or NodeLiveness::Unready, and ssr::topology::local_status decides that from two readings joined with &&: the journal serial, and blob store health. Existing fixtures handed it a blob root that worked, so both readings agreed and the join itself went undecided. Relaxing it to || kept the suite green, which means a node whose blob store had become unreadable would still have shown as Live to an operator reading the page.

This branch drives the one state that separates the two operators: a regular file sitting where the blob root belongs, so create_dir_all in the health check fails while the journal read beside it still answers. It runs the working shape too, since a pair that reports Unready both ways would agree with an implementation stuck on Unready.

local_status and the surrounding rendering stay as they were. This closes the last surviving mutant in peryx-web code that the --all-features build compiles; the other 136 the nightly reports for this crate sit behind cfg gates that the same build strips, which #2208 covers.

Refs #1893

`local_status` folds two observations into one liveness verdict: the journal
serial and the blob store health. Every existing test built an app whose blob
root was a usable directory, so both observations agreed and nothing decided
which operator joined them. Relaxing that `&&` to `||` left all 185 peryx-web
tests green while making a node with an unreadable blob root advertise itself
as Live, which is the one answer the topology page exists to get right.

The new case drives the only state that separates the two: a regular file
where the blob root belongs, so the health check fails on its `create_dir_all`
while the journal read beside it still succeeds. It runs the healthy shape as
well, because a pair that reports Unready in both directions would pass
against an implementation that never reports Live.

Refs #1893
@gaborbernat gaborbernat added area:web-ui Web UI and browser behavior type:test Testing, conformance, metrics, or validation coverage area:tests Conformance, perf tests, and observability labels Sep 9, 2026
@gaborbernat
gaborbernat merged commit 34eca99 into main Sep 9, 2026
19 checks passed
@gaborbernat
gaborbernat deleted the test/web-mutants-1893 branch September 9, 2026 17:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:tests Conformance, perf tests, and observability area:web-ui Web UI and browser behavior type:test Testing, conformance, metrics, or validation coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant